#include<stdio.h>

//数组指针

void PrintArray(int (*a)[3],int szie)
{
     for (int i=0;i<szie;i++)
    {
        for(int j=0;j<3;j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
}

int main()
{
    //二维数组：多个一维数组的集合
    int a[2][3] =   // 两个 一维数组
    {
        {1,2,3},
        {4,5,6}
    };
    // PrintArray(a,2);
   
   //   a : 数组指针(二级指针)  指向二维数组的  第一个 一维数组（第一个元素，元素是数组） 
   
   //   *a = a[0];   对二级指针取值 取出的是一个 一级 指针(行指针，指向第一行数组)
   
   
   //   a[0] ：（元素指针）指向 第一个 一维数组的 第一个元素 
   
   //   a[0] = &a[0][0]
   
   
   // &a :二维数组指针：走一步跨过一个二维数组




//    printf("%p %p %p %p\n",a,a[0],&a[0][0],&a);
//    printf("%p %p %p %p\n",a+1,a[0]+1,&a[0][0]+1,&a+1);
   
//    //   a[i] = *(a+i)
  
//    printf("%d\n",**a);

//  a[i][j] = *( * ( a + i ) + j )
    // printf("%d\n",*(*(a+1)+1));
    // printf("%d\n",a[1][1]);
    
    int (*p)[2] = a;   //数组指针p 指向一个两个元素的数组，所以 p+1 跨过的那一个数组是  两个元素 即 跨越 8个字节
    printf("%d\n",**(p+1));




    
    return 0;
}